home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-02
/
vdl020d.zip
/
VEMS.DOC
< prev
next >
Wrap
Text File
|
1993-04-14
|
10KB
|
311 lines
{
════════════════════════════════════════════════════════════════════════════
Visionix Expanded Memory Services Unit (VEMS)
Copyright 1991,92,93 Visionix
ALL RIGHTS RESERVED
────────────────────────────────────────────────────────────────────────────
Revision history in reverse chronological order:
Initials Date Comment
──────── ──────── ────────────────────────────────────────────────────────
mep 03/30/93 Moved EMS 4.0/3.2 code from VMemLow as replacement
lpg 03/15/93 Added Source Documentation
mep 02/11/93 Cleaned up code for beta release
jrt 02/08/93 Sync with beta 0.12 release
jrt 12/07/92 Sync with beta 0.11 release
jrt 11/21/92 Sync with beta 0.08
jrt 11/18/92 First logged revision.
────────────────────────────────────────────────────────────────────────────
}
Unit VEMS;
Uses
VTypes,
DOS;
{────────────────────────────────────────────────────────────────────────────}
Type
TEMSError = BYTE;
{-----------------------------}
TEMSHandle = WORD;
PEMSHandle = ^TEMSHandle;
{-----------------------------}
TEMMHandle = WORD;
PEMMHandle = ^TEMMHandle;
{-----------------------------}
TEMSMapArr = RECORD
LogicPage : WORD; { $FFFF = unmap physical pg }
PhysicalPage : WORD; { segment address }
END;
PEMSMapArr = ^TEMSMapArr;
{-----------------------------}
TEMSHandleName = Array[1..8] of BYTE;
PEMSHandleName = ^TEMSHandleName;
{-----------------------------}
TEMSHandleDir = RECORD
Handle : WORD;
HandleName : TEMSHandleName;
END;
PEMSHandleDir = ^TEMSHandleDir;
{-----------------------------}
TEMSMapAddr = RECORD
END;
PEMSMapAddr = ^TEMSMapAddr;
{-----------------------------}
TEMSCopyData = RECORD
RegionLen : LONGINT;
SourceMemType : BYTE; { 0 = conventional, 1 = expanded }
SourceHandle : WORD; { 0 if conventional memory }
SourceInitOfs : WORD; { within page if EMS, }
{ within segment if conventional }
SourceInitSegPg : WORD; { segment if conventional memory,}
{ logical page if EMS }
DestMemType : BYTE; { 0 = conventional, 1 = expanded }
DestHandle : WORD;
DestInitOfs : WORD;
DestInitSegPg : WORD;
END;
PEMSCopyData = ^TEMSCopyData;
{-----------------------------}
TEMSMapPhyAddr = RECORD
PhysicalPgSeg : WORD;
PhysicalPgNum : WORD;
END;
PEMSMapPhyAddr = ^TEMSMapPhyAddr;
{-----------------------------}
TEMSHardwareCfgArr = RECORD
SizeRawEMMPg : WORD; { in paragraphs }
NumAlternRegSet : WORD;
SizeSaveMapContext : WORD; { in bytes }
NumRegSetAssignDMA : WORD;
DMAOperationType : WORD; { 0 = DMA w/alternate register sets, }
{ 1 = only one DMA register set }
END;
PEMSHardwareCfgArr = ^TEMSHardwareCfgArr;
{────────────────────────────────────────────────────────────────────────────}
{----------}
{ EMS 3.2+ }
{----------}
Function VEMSErrorToStr( Status : TEMSError ) : STRING;
Function VEMSInstalled : BOOLEAN;
Function VEMSGetManagerStatus : TEMSError;
Function VEMSGetPgFrameStatus( Var PgFrameSeg : WORD ) : TEMSError;
Function VEMSGetFreePg( Var UnallocPg : WORD;
Var TotalPg : WORD ) : TEMSError;
Function VEMSNewHandle( LogicalPg : WORD;
Var EMSHandle : TEMSHandle ) : TEMSError;
Function VEMSMapMemory( EMSHandle : TEMSHandle;
PhysicalPg : BYTE;
LogicalPg : WORD ) : TEMSError;
Function VEMSDisposeHandle( EMMHandle : TEMMHandle ) : TEMSError;
Function VEMMGetVersion( Var EMMVersion : BYTE ) : TEMSError;
Function VEMSSaveMapContext( EMSHandle : TEMSHandle ) : TEMSError;
Function VEMSRestoreMapContext( EMSHandle : TEMSHandle ) : TEMSError;
Function VEMMGetNumHandles( Var NumHandles : WORD ) : TEMSError;
Function VEMSPgsOwnedByHandle( EMMHandle : TEMMHandle;
Var LogicalPgs : WORD ) : TEMSError;
Function VEMSGetPgAllHandles( EMMInfo : POINTER;
Var NumHandles : WORD ) : TEMSError;
Function VEMSGetPgMap( OutMapReg : POINTER ) : TEMSError;
Function VEMSSetPgMap( InMapReg : POINTER ) : TEMSError;
Function VEMSGetSetPgMap( InMapReg : POINTER;
OutMapReg : POINTER ) : TEMSError;
Function VEMSGetSizePgMapArr( Var Size : BYTE ) : TEMSError;
{────────────────────────────────────────────────────────────────────────────}
{---------}
{ EMS 4.0 }
{---------}
Function VEMSGetPartPgMap( InPartMap : POINTER;
OutPartMap : POINTER ) : TEMSError;
Function VEMSSetPartPgMap( InPartMap : POINTER ) : TEMSError;
Function VEMSGetSizePartPgMap( NumMapSeg : WORD;
Var Size : BYTE ) : TEMSError;
Function VEMSMapMultiHandlePg( EMSHandle : TEMSHandle;
UseSegAddr : BOOLEAN;
NumInArr : WORD;
EMSMapArr : PEMSMapArr ) : TEMSError;
Function VEMSReallocatePg( EMSHandle : TEMSHandle;
NumPg : WORD;
Var RealNumP : WORD ) : TEMSError;
Function VEMSGetHandleAttr( EMSHandle : TEMSHandle;
Var HandleAttr : BYTE ) : TEMSError;
Function VEMSSetHandleAttr( EMSHandle : TEMSHandle;
HandleAttr : BYTE ) : TEMSError;
Function VEMSGetHandleCapable( EMSHandle : TEMSHandle;
Var AttrCapable : BYTE ) : TEMSError;
Function VEMSGetHandleName( EMSHandle : TEMSHandle;
HandleName : POINTER ) : TEMSError;
Function VEMSSetHandleName( EMSHandle : TEMSHandle;
HandleName : POINTER ) : TEMSError;
Function VEMSGetHandleDir( HandleDir : PEMSHandleDir;
Var NumEntries : BYTE ) : TEMSError;
Function VEMSSearchNamedHandle( HandleName : PEMSHandleName;
Var Value : WORD ) : TEMSError;
Function VEMSGetTotalHandles( Var TotalHandles : WORD ) : TEMSError;
Function VEMSAlterPgMapJump( EMSHandle : TEMSHandle;
UseSegAddr : BOOLEAN;
MapAddr : PEMSMapAddr) : TEMSError;
Function VEMSAlterPgMapCall( EMSHandle : TEMSHandle;
UseSegAddr : BOOLEAN;
MapAddr : PEMSMapAddr) : TEMSError;
Function VEMSGetPgMapStackReq( Var StackSpaceReq: WORD ) : TEMSError;
Function VEMSMoveMemRegion( EMSCopyData : PEMSCopyData): TEMSError;
Function VEMSExchangeMemRegion( EMSCopyData : PEMSCopyData): TEMSError;
Function VEMSGetMapPhyAddrArr( MapPhyAddr : PEMSMapPhyAddr;
Var NumEntries : WORD ) : TEMSError;
Function VEMSGetEntriesMPAArr( Var NumEntries : WORD ) : TEMSError;
Function VEMSHardwareCfgArr( EMSHardwareCfgArr : PEMSHardwareCfgArr ) : TEMSError;
Function VEMSGetUnallocRawPg( Var UnallocRawPg : WORD;
Var TotalRawPg : WORD ) : TEMSError;
Function VEMSAllocStandardPg( NumPg : WORD;
Var EMSHandle : TEMSHandle ) : TEMSError;
Function VEMSAllocRawPg( NumPg : WORD;
Var EMSHandle : TEMSHandle ) : TEMSError;
Function VEMSGetAltMapRegSet( Var AltMapRegSet : BYTE;
SaveMapContxt: POINTER ) : TEMSError;
Function VEMSSetAltMapRegSet( AltMapRegSet : BYTE;
SaveMapContxt: POINTER ) : TEMSError;
Function VEMSGetAltMapSaveArrSize(Var ArrSize : WORD ) : TEMSError;
Function VEMSAllocAltMapRegSet( Var AltMapRegSet : BYTE ) : TEMSError;
Function VEMSDeallocAltMapRegSet( AltMapRegSet : BYTE ) : TEMSError;
Function VEMSAllocDMARegSet( Var DMARegSet : BYTE ) : TEMSError;
Function VEMSEnabDMAAltMapRegSet( DMARegSet : BYTE;
DMAChannel : BYTE ) : TEMSError;
Function VEMSDisabDMAAltMapRegSet( DMARegSet : BYTE ) : TEMSError;
Function VEMSDeallocDMARegSet( DMARegSet : BYTE ) : TEMSError;
Function VEMSPrepWarmBoot : TEMSError;
Function VEMSEnabOSFuncSet( Var AccessKey : LONGINT ) : TEMSError;
Function VEMSDisabOSFuncSet( Var AccessKey : LONGINT ) : TEMSError;
Function VEMSRetAccessKey( Var AccessKey : LONGINT ) : TEMSError;
{────────────────────────────────────────────────────────────────────────────}
──────────────────────────────────────────────────────────────────────────────
[FUNCTION]
Function VEMSInstalled : BOOLEAN;
[PARAMETERS]
(None)
[RETURNS]
Whether EMS Support is Available
[DESCRIPTION]
[SEE-ALSO]
[EXAMPLE]